const Character = require('../models/Character');

// 创建角色
const createCharacter = async (req, res) => {
  try {
    const { user_id, name, emoji_data, personality } = req.body;

    // 验证必要字段
    if (!user_id || !name) {
      return res.status(400).json({ error: '请提供用户ID和角色名称' });
    }

    // 创建角色
    const character = await Character.create(user_id, name, emoji_data, personality);

    res.status(201).json(character);
  } catch (err) {
    console.error('创建角色错误:', err);
    res.status(500).json({ error: '创建角色失败' });
  }
};

// 获取角色信息
const getCharacter = async (req, res) => {
  try {
    const { id } = req.params;

    // 获取角色
    const character = await Character.findById(id);
    if (!character) {
      return res.status(404).json({ error: '角色不存在' });
    }

    res.json(character);
  } catch (err) {
    console.error('获取角色信息错误:', err);
    res.status(500).json({ error: '获取角色信息失败' });
  }
};

// 获取用户的所有角色
const getUserCharacters = async (req, res) => {
  try {
    const { userId } = req.params;

    // 获取用户的所有角色
    const characters = await Character.findByUserId(userId);

    res.json(characters);
  } catch (err) {
    console.error('获取用户角色错误:', err);
    res.status(500).json({ error: '获取用户角色失败' });
  }
};

// 更新角色
const updateCharacter = async (req, res) => {
  try {
    const { id } = req.params;
    const { name, emoji_data, personality } = req.body;

    // 检查角色是否存在
    const existingCharacter = await Character.findById(id);
    if (!existingCharacter) {
      return res.status(404).json({ error: '角色不存在' });
    }

    // 更新角色
    const character = await Character.update(id, name, emoji_data, personality);

    res.json(character);
  } catch (err) {
    console.error('更新角色错误:', err);
    res.status(500).json({ error: '更新角色失败' });
  }
};

// 删除角色
const deleteCharacter = async (req, res) => {
  try {
    const { id } = req.params;

    // 检查角色是否存在
    const existingCharacter = await Character.findById(id);
    if (!existingCharacter) {
      return res.status(404).json({ error: '角色不存在' });
    }

    // 删除角色
    await Character.delete(id);

    res.json({ message: '角色删除成功' });
  } catch (err) {
    console.error('删除角色错误:', err);
    res.status(500).json({ error: '删除角色失败' });
  }
};

module.exports = {
  createCharacter,
  getCharacter,
  getUserCharacters,
  updateCharacter,
  deleteCharacter
};